package com.clown.util;

import java.util.List;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONObject;
import com.clown.core.JedisClusterUtils;
import com.clown.po.UserPo;
import com.clown.service.UserService;

/**
 * 系统启动时加载缓存信息
 * 
 * @author CJ
 * @since 2017年10月11日
 * @version 1.0
 */
public class RedisLoadRepository {
	
	private static final Logger log = LoggerFactory.getLogger(RedisLoadRepository.class);
	
	//用户信息key
	private static final String USER_INFO_KEY = "clown:userInfoById:";
	
	@Resource
	private UserService userService;
	
	/**
	 * 初始化缓存信息
	 * 
	 * @author CJ
	 * @since 2017年10月11日
	 */
	public void init(){
		//缓存所有用户信息
		loadInitUserRedisInfo(userService);
	}
	
	/**
	 * 缓存所有的用户信息
	 * 
	 * @author CJ
	 * @since 2017年10月11日
	 */
	public void loadInitUserRedisInfo(UserService userService){
		List<UserPo> users = userService.getUserList();
		for (UserPo userPo : users) {
			if(userPo != null){
				log.debug("用户id "+userPo.getId() + " 用户名称 "+userPo.getName());
				if(JedisClusterUtils.hashGet(USER_INFO_KEY, userPo.getId().toString())==null){
					//根据用户ID 放入缓存
					JedisClusterUtils.hashSet(USER_INFO_KEY, userPo.getId().toString(), JSONObject.toJSONString(userPo));
				}else{
					//如果缓存中存在 就先删除 再放入缓存
					JedisClusterUtils.delFromMap(USER_INFO_KEY, userPo.getId().toString());
					JedisClusterUtils.hashSet(USER_INFO_KEY, userPo.getId().toString(), JSONObject.toJSONString(userPo));
				}
			}
		}
	}
} 
